(*Gradients are scaled by a factor of 0.5 for asthetics*)
Manipulate[Show[
ContourPlot[{x^2+2*y^2==1,x^2+2*y^2==2,x^2+2*y^2==3,x^2+2*y^2==4,x^2+2*y^2==0.5,x^2+2*y^2==1.5,x^2+2*y^2==2.5,x^2+2*y^2==3.5},{x,-2.2,2.2},{y,-1.6,1.6},PlotRange->{{-3.2,3.2},{-3.2,3.2}} ,PlotLabel->"f(x,y) = x^2 +2y^2,  g(x,y)=-x^2-y^2=-1",ImageSize->800],
ContourPlot[x^2+y^2==1,{x,-1,1},{y,-1,1},ContourStyle->{Thick,Red}],
Graphics[{Opacity[f],Orange,Thick,Arrowheads[.015],Arrow[{{0,1},{0,3}}]}],
Graphics[{Opacity[f],Orange,Thick,Arrowheads[.015],Arrow[{{0,-1},{0,-3}}]}],
Graphics[{Opacity[f],Orange,Thick,Arrowheads[.015],Arrow[{{1,0},{2,0}}]}],
Graphics[{Opacity[f],Orange,Thick,Arrowheads[.015],Arrow[{{-1,0},{-2,0}}]}],
Graphics[{Opacity[g],Pink,Thick,Arrowheads[.015],Arrow[{{0,1},{0,0.5}}]}],
Graphics[{Opacity[g],Pink,Thick,Arrowheads[.015],Arrow[{{0,-1},{0,-0.5}}]}],
Graphics[{Opacity[g],Pink,Thick,Arrowheads[.015],Arrow[{{1,0},{0.5,0}}]}],
Graphics[{Opacity[g],Pink,Thick,Arrowheads[.015],Arrow[{{-1,0},{-0.5,0}}]}]
],{{f,0,Text[Style["Show ∇f",RGBColor[0.5,0.25,0]]]},{0,1}},{{g,0,Text[Style["Show ∇g",RGBColor[0.5,0.205,0.35]]]},{0,1}}]

Manipulate[Show[
ContourPlot3D[z==x^2+2*y^2,{x,-2,2},{y,-2,2},{z,0,4},AxesOrigin->{0,0,0},Mesh->False,ContourStyle->{Opacity[S],Cyan},BoundaryStyle->None,ImageSize->700],
ParametricPlot3D[{Cos[t],Sin[t],r*((Cos[t])^2+2*(Sin[t])^2)},{t,0,2*π},PlotStyle->{Thick,Red,Opacity[D]}],
ContourPlot3D[x^2+y^2==1,{x,-1,1},{y,-1,1},{z,0,4},ContourStyle->{Pink,Opacity[C]},Mesh->False,BoundaryStyle->None]
],
{{S,1,Text[Style["Surface Opacity",RGBColor[0,0,0.5]]]},0,1},
{{C,0,Text[Style["Show Cylinder Over Domain",RGBColor[0.5,0.205,0.35]]]},{0,0.5}},
{{D,1,Text[Style["Show Domain",RGBColor[0.5,0,0]]]},{0,1}},
{{r,0,"Raise the Domain"},0,1}]

Manipulate[Show[
ContourPlot3D[2*x+2*y+z,{x,-5,5},{y,-5,5},{z,-5,5},ColorFunction->Hue,Contours->15,Mesh->False,PlotRange->{{-6,6},{-6,6},{-6,6}},AxesOrigin->{0,0,0}, ContourStyle->Opacity[C],BoundaryStyle->None,ImageSize->700],
ContourPlot3D[x^2+y^2+z^2==9,{x,-3,3},{y,-3,3},{z,-3,3},Mesh->False,ContourStyle->Pink],
Graphics3D[{Opacity[f],Orange,Thick,Arrowheads[.015],Arrow[{{-2,-2,-1},{-4,-4,-2}}]}],
Graphics3D[{Opacity[f],Orange,Thick,Arrowheads[.015],Arrow[{{2,2,1},{4,4,2}}]}],
ContourPlot3D[{2*x+2*y+z==-9,2*x+2*y+z==9},{x,-5,5},{y,-5,5},{z,-5,5},Mesh->False,PlotRange->{{-6,6},{-6,6},{-6,6}},AxesOrigin->{0,0,0}, ContourStyle->Opacity[D],BoundaryStyle->None,ImageSize->700]
],
{{C,1,"Contour Opacity"},0,1},{{f,0,"Show Gradients"},{0,1}},{{D,0,"Show Max/Min Contours"},{0,1}}]